#pragma once

#include <string>
#include "../Utils/include/json.hpp"

using json = nlohmann::json;

// 物品类,用于表示游戏中的各种物品
class Item {
private:
    int id_;                  // 物品ID
    std::string name_;        // 物品名称
    std::string effect_;      // 物品效果类型(治疗/增加攻击/增加防御等)
    int value_;              // 效果数值
    bool isPicked_ = false;   // 物品是否已被拾取

public:
    Item() = default;
    Item(int id, const std::string& name, const std::string& effect, int value);
    Item(const Item& other);
    Item& operator=(const Item& other);
    ~Item();

    // 获取物品属性
    int getID() const;                // 获取物品ID
    std::string getName() const;      // 获取物品名称
    std::string getEffect() const;    // 获取物品效果类型
    int getValue() const;             // 获取效果数值
    bool isPicked() const;            // 检查物品是否已被拾取
    void setPicked(bool picked);      // 设置物品拾取状态

    // JSON序列化支持
    friend void from_json(const json& j, Item& item);
};